package views.mediators
{
	import com.axon.base.helpers.AxFailure;
	import com.axon.base.managers.AxErrorManager;
	import com.axon.mvc.helpers.AxVerbs;
	import com.axon.mvc.patterns.mediator.AxMediator;
	
	import flash.display.DisplayObject;
	
	import helpers.Constants;
	import helpers.ListaPleitos;
	
	import models.vo.Pleito;
	
	import mx.containers.TabNavigator;
	
	import views.components.PleitoListaRejeitadosView;

	public class PleitoListaRejeitadosMediator extends AxMediator
	{
		//////////////////////////////////////////////////////////////////////////////////////////////////////
		
		public function PleitoListaRejeitadosMediator( viewComponent: DisplayObject = null) { super(viewComponent); }
		
		//////////////////////////////////////////////////////////////////////////////////////////////////////
		
		public function get view(): PleitoListaRejeitadosView { return this.viewComponent as PleitoListaRejeitadosView; }
		
		//////////////////////////////////////////////////////////////////////////////////////////////////////
		
		override protected function initialize(): void 
		{
			regBroadcastInterests( [ AxVerbs.REFRESH ] );
			 
			regResponseInterest( Pleito, [	AxVerbs.LIST, ] );
		}	
		
		//////////////////////////////////////////////////////////////////////////////////////////////////////
		
		public function eventViewShow(): void
		{
			view.adgMain.dataProvider = null;
			view.adgMain.setFocus();
			callController( Pleito, AxVerbs.LIST, Constants.MNEMONICO_LISTA_REJEITADOS );
		}
		
		//////////////////////////////////////////////////////////////////////////////////////////////////////
		
		public function eventEnableGestures(): void
		{
    		view.pbAbrir.enabled =  ( view.selectedPleito != null );
		}

		//////////////////////////////////////////////////////////////////////////////////////////////////////
		
		public function brcastRefresh(sender: Object, body: Object, extraInfo: Object): void
		{
			AppFacade(facade).pleitoProxy.listaRejeitados.invalidate();

			if  ( (view.parent is TabNavigator) && ((view.parent as TabNavigator).selectedChild == view) ) 
				eventViewShow();
		}
		
		//////////////////////////////////////////////////////////////////////////////////////////////////////
		
		public function respPleitoListSuccess( sender: Object, body: Object, extraInfo: Object ): void
		{
			if ( body == AppFacade(facade).pleitoProxy.listaRejeitados ) {
				view.adgMain.dataProvider = (body as ListaPleitos).modelsCollection;
				view.adgMain.axRecallLastSelection(); }
		}
		
		public function respPleitoListFailure( sender: Object, body: Object, extraInfo: Object ): void
		{
			if ( body == AppFacade(facade).pleitoProxy.listaRejeitados )
				AxErrorManager.showFailure( new AxFailure("Falha no carregamento da lista de pleitos rejeitados.") );
		}
		
	}
}